package com.songshuai.sales.tool.service;

import com.songshuai.sales.tool.dto.request.label.AddLabelReqDto;
import com.songshuai.sales.tool.dto.request.label.UpdateLabelReqDto;
import com.songshuai.sales.tool.dto.response.label.QueryLabelsPageResDto;
import com.songshuai.sales.tool.dto.response.label.QueryLabelsResDto;
import com.songshuai.webapi.baseapi.model.sales.Label;

import java.util.List;


/**
 * 此类为[基础代码]自动生成,已经拥有基本的增删改成操作 
 * <其他请自行扩展>
 * @Author: 刘汉轩
 * @Date: 2019-03-19 14:49:38
 * 
 */
public interface LabelService{
 	
	
	/**
     * 新增
     * @param entity 
     */
    int insertSelective(Label entity);
    
    /**
     * 批量新增
     * @param list 
     */
    void insertBatch(List<Label> list);
    
    /**
     * 根据主键修改单条数据
     * @param entity 
     */
    int updateByPrimaryKey(Label entity);
    
    /**
     * 根据主键批量修改数据
     * @param list 
     */
    void updateBatch(List<Label> list);
    
    /**
     * 根据主键查询单条数据
     * @param labelId
     */
    Label selectByPrimaryKey(String labelId);
    
    /**
     * 根据条件查询单条记录
     * @param entity 
     */
    Label selectByEntity(Label entity);
    
    /**
     * 根据条件查询多条记录
     * @param entity 
     */
    List<Label> selectByEntityList(Label entity);
    
    /**
     * 根据条件查询Id
     * @param entity 
     */
    String selectById(Label entity);
    
    /**
     * 根据条件查询Ids
     * @param entity 
     */
    List<String> selectByIds(Label entity);
    
    /**
     * 根据主键删除单条记录
     * @param labelId
     */
    void deleteByPrimaryKey(String labelId);
    
    /**
     * 根据主键删除多条记录
     * @param list
     */
    void deleteBatch(List<String> list);
    
    /**
     * 根据某些条件删除
     * @param entity
     */
    void deleteByEntity(Label entity);


    /**
     * 根据标签名分页查询
     * @param labelName
     * @return
     */
    List<QueryLabelsPageResDto> queryLabelsByName(String labelName);


    /**
     * 插入标签
     * @param request
     * @return
     */
    boolean insertLabel(AddLabelReqDto request);


    /**
     * 查询标签组下子标签关联数量
     * @param labelId
     * @return
     */
    int queryRelationSopCount(String labelId);


    /**
     * 修改标签信息
     * @param request
     * @return
     */
    boolean updateLabel(UpdateLabelReqDto request);


    /**
     * 根据id删除标签
     * @param labelId
     * @return
     */
    boolean deleteLabelById(String labelId);


    /**
     * 根据id查询集合
     * @return
     */
    List<QueryLabelsResDto> queryLabels(String labelId);


}